package com.hzc.test.util;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {

    /**
     * Date转化为String
     * @param date 时间
     * @return 返回String类型数据
     */
    public static String conversionString(Date date) {
        String time;
        SimpleDateFormat dateFormat = new SimpleDateFormat();
        dateFormat.applyPattern("yyyy年MM月dd日");
        time = dateFormat.format(date);
        return time;
    }


    /**
     * 将String类型转化为时间格式
     * @param value 字符串时间
     * @return 返回时间格式的数据
     */
    public static Date conversion(String value) {
        try {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 将时间转化为字符串（月、日）
     *
     * @param date 时间
     * @return 返回时间格式的数据
     */
    public static String conversionToMonthDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        String month = String.valueOf(calendar.get(Calendar.MONTH) + 1);
        String day = String.valueOf(calendar.get(Calendar.DATE));
        String hours = String.valueOf(calendar.get(Calendar.HOUR_OF_DAY));
        return month + '月' + day + '日' + hours + '时';
    }


    /**
     * 将时间转化为字符串（年、月、日）
     * @param date 时间
     * @return 返回时间格式的数据
     */
    public static String conversionToYearMonthDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        String year = String.valueOf(calendar.get(Calendar.YEAR));
        String month = String.valueOf(calendar.get(Calendar.MONTH) + 1);
        String day = String.valueOf(calendar.get(Calendar.DATE));
        return year + '-' + month + '-' + day;
    }

    /**
     * 当前时间向推几小时
     *
     * @param ihour 小时
     * @return String
     */
    public static Date dateRoll(int ihour) {
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //（1）获取当前时间
        LocalDateTime date = LocalDateTime.now();
        //（2）获取当前时间的前几小时时间
        LocalDateTime localDateTime = date.minusHours(ihour);

        return conversion(dateTimeFormatter.format(localDateTime));
    }

}
